package br.com.vexillum.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;

import br.com.vexillum.model.annotations.SearchField;
import br.com.vexillum.model.annotations.Validate;
import br.com.vexillum.model.enums.Sexo;

@SuppressWarnings("serial")
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(discriminatorType=DiscriminatorType.INTEGER)
@Table(name = "users")
public class UserBasic extends CommonEntity {

	@Validate(notNull=true, min=5, max=50)
	@SearchField
	@Column(name="nome", unique=false, nullable=false, updatable=true, length=200)
	private String nome;
	
	@Validate(notNull=true, min=5, max=50)
	@SearchField
	@Column(name="email", unique=true, nullable=false, updatable=false, length=200)
	private String email;
	
	@Column(name="senha", unique=false, nullable=false, updatable=true, length=200)
	private String senha;
	
	@Column(name="data_nasc", unique=false, nullable=false, updatable=true, length=50)
	private Date dataNascimento;
	
	@Column(name="sexo", unique=false, nullable=false, updatable=true, length=50)
	@Enumerated(EnumType.STRING)
	private Sexo sexo;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
		//this.senha = EncryptUtils.encryptOnSHA512(senha);
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public Sexo getSexo() {
		return sexo;
	}

	public void setSexo(Sexo sexo) {
		this.sexo = sexo;
	}

}
